home *** CD-ROM | disk | FTP | other *** search
/ Better Homes & Gardens: …oking for Today - Chicken / Image.iso / pc / shared.dxr / 01005_DB application.ls < prev    next >
Encoding:
Text File  |  1995-11-21  |  14.3 KB  |  489 lines

  1. on DBMain
  2.   global gCurrentRecipe, gDBBeauty
  3.   cursor(4)
  4.   dbBeginSession()
  5.   DBGetRecord(gCurrentRecipe, "beauty")
  6.   set beauty to DBGetField(gDBBeauty)
  7.   DBEndSession()
  8.   cursor(-1)
  9.   return beauty
  10. end
  11.  
  12. on DBPlanner aRecipe
  13.   global gRecipeIDDB, gDBCalories, gDBFat, gPlannerCalories, gPlannerFat
  14.   cursor(4)
  15.   set recipeID to getProp(gRecipeIDDB, aRecipe)
  16.   DBGetRecord(recipeID, "recipe")
  17.   set gPlannerCalories to integer(DBGetField(gDBCalories))
  18.   set gPlannerFat to integer(DBGetField(gDBFat))
  19.   cursor(-1)
  20. end
  21.  
  22. on DBShopping recipeID
  23.   global gDBResult, gDBQuantity, gDBUnit, gDBNoQuantity
  24.   cursor(4)
  25.   dbBeginSession()
  26.   set shoppingQuantity to EMPTY
  27.   set shoppingUnit to EMPTY
  28.   set shoppingRest to EMPTY
  29.   set ingredients to EMPTY
  30.   DBGetRecord(recipeID, "ingredient")
  31.   set quantity to DBGetField(gDBQuantity)
  32.   set noQuantity to DBGetField(gDBNoQuantity)
  33.   set shoppingQuantity to quantity & RETURN & RETURN
  34.   set shoppingUnit to DBGetField(gDBUnit) & RETURN & RETURN
  35.   set shoppingRest to noQuantity & RETURN & RETURN
  36.   if quantity = 0 then
  37.     set ingredients to noQuantity & RETURN & RETURN
  38.   else
  39.     set ingredients to floatToFrac(quantity) && noQuantity & RETURN & RETURN
  40.   end if
  41.   repeat while 1
  42.     DBNextRecord("ingredient")
  43.     if gDBResult = 2 then
  44.       exit repeat
  45.     end if
  46.     set quantity to DBGetField(gDBQuantity)
  47.     set noQuantity to DBGetField(gDBNoQuantity)
  48.     put quantity & RETURN & RETURN after shoppingQuantity
  49.     put DBGetField(gDBUnit) & RETURN & RETURN after shoppingUnit
  50.     put noQuantity & RETURN & RETURN after shoppingRest
  51.     if quantity = 0 then
  52.       put noQuantity & RETURN & RETURN after ingredients
  53.       next repeat
  54.     end if
  55.     put floatToFrac(quantity) && noQuantity & RETURN & RETURN after ingredients
  56.   end repeat
  57.   add(gAllQuantities, shoppingQuantity)
  58.   add(gAllUnits, shoppingUnit)
  59.   add(gAllRests, shoppingRest)
  60.   DBEndSession()
  61.   cursor(-1)
  62.   return ingredients
  63. end
  64.  
  65. on DBCollate
  66.   global gDBResult, gDBCollate, gShoppingTitles, gCollateLists
  67.   cursor(4)
  68.   dbBeginSession()
  69.   set gCollateLists to []
  70.   repeat with aRecipe in gShoppingTitles
  71.     set collateLines to EMPTY
  72.     set recipeID to getProp(gRecipeIDDB, aRecipe)
  73.     DBGetRecord(recipeID, "ingredient")
  74.     set collateLines to DBGetField(gDBCollate) & RETURN & RETURN
  75.     repeat while 1
  76.       DBNextRecord("ingredient")
  77.       if gDBResult = 2 then
  78.         exit repeat
  79.       end if
  80.       put DBGetField(gDBCollate) & RETURN & RETURN after collateLines
  81.     end repeat
  82.     put RETURN after collateLines
  83.     add(gCollateLists, collateLines)
  84.   end repeat
  85.   DBEndSession()
  86.   cursor(-1)
  87.   return(collateList)
  88. end
  89.  
  90. on DBTermDefinition termID
  91.   global gDBTermDefinition, gTermPhotoList
  92.   cursor(4)
  93.   dbBeginSession()
  94.   DBGetRecord(termID, "terms")
  95.   put DBGetField(gDBTermDefinition) into field "term text"
  96.   set gTermPhotoList to DBTermPhotos(termID)
  97.   DBEndSession()
  98.   cursor(-1)
  99. end
  100.  
  101. on DBTermPhotos termID
  102.   global gDBResult, gDBTermPhotoFile
  103.   cursor(4)
  104.   dbBeginSession()
  105.   set photo to 0
  106.   set photoList to [:]
  107.   repeat while 1
  108.     set photo to integer(photo) + 1
  109.     if photo < 10 then
  110.       put "0" before photo
  111.     end if
  112.     set id to integer(termID & photo)
  113.     DBGetRecord(id, "term photo")
  114.     if gDBResult = 0 then
  115.       addProp(photoList, id, DBGetField(gDBTermPhotoFile))
  116.       next repeat
  117.     end if
  118.     exit repeat
  119.   end repeat
  120.   DBEndSession()
  121.   cursor(-1)
  122.   return photoList
  123. end
  124.  
  125. on DBPhotoName photoID
  126.   global gDBPhotoTitle
  127.   cursor(4)
  128.   dbBeginSession()
  129.   DBGetRecord(photoID, "term photo")
  130.   put DBGetField(gDBPhotoTitle) into field "photo title"
  131.   DBEndSession()
  132.   cursor(-1)
  133. end
  134.  
  135. on DBPhotoCaption photoID
  136.   global gDBPhotoCaption
  137.   cursor(4)
  138.   dbBeginSession()
  139.   DBGetRecord(photoID, "term photo")
  140.   set caption to DBGetField(gDBPhotoCaption)
  141.   if caption = "|" then
  142.     set caption to " "
  143.   end if
  144.   put caption into field "caption"
  145.   DBEndSession()
  146.   cursor(-1)
  147. end
  148.  
  149. on DBTermLinks
  150.   global gCurrentRecipe, gLastTermRecipe, gDBTermLinks, gTermIDDB, gRecipeIDDB
  151.   cursor(4)
  152.   DBBeginSearchSession()
  153.   if gCurrentRecipe = gLastTermRecipe then
  154.     exit
  155.   end if
  156.   set gLastTermRecipe to gCurrentRecipe
  157.   set termList to []
  158.   set results to DBStartSearch(gCurrentRecipe, gDBTermLinks)
  159.   repeat with i = 1 to results
  160.     set term to getOne(gTermIDDB, DBGetResult(i))
  161.     if term <> 0 then
  162.       add(termList, term & RETURN)
  163.     end if
  164.   end repeat
  165.   sort(termList)
  166.   if gCurrentRecipe > 2068 then
  167.     put "No recipe specific terms available" into field "recipe terms"
  168.   else
  169.     put "Recipe: " & getOne(gRecipeIDDB, gCurrentRecipe) & RETURN & RETURN into field "recipe terms"
  170.   end if
  171.   put listToString(termList) after field "recipe terms"
  172.   DBEndSession()
  173.   cursor(-1)
  174. end
  175.  
  176. on DBUtensil utensilID
  177.   global gDBUtensilText
  178.   cursor(4)
  179.   dbBeginSession()
  180.   DBGetRecord(utensilID, "utensil")
  181.   put DBGetField(gDBUtensilText) into field "utensil text"
  182.   DBEndSession()
  183.   cursor(-1)
  184. end
  185.  
  186. on DBFoodNutrition foodID
  187.   global gDBNutritionUnit, gDBNutritionList
  188.   cursor(4)
  189.   dbBeginSession()
  190.   DBGetRecord(foodID, "nutrition")
  191.   put DBGetField(gDBNutritionUnit) into field "unit"
  192.   set num to 0
  193.   repeat with i in gDBNutritionList
  194.     set num to num + 1
  195.     put DBGetField(i) into field ("nutrition" & num)
  196.   end repeat
  197.   DBEndSession()
  198.   cursor(-1)
  199. end
  200.  
  201. on DBTableRows
  202.   global gDBResult, gDBTableText, gCurrentTableID
  203.   cursor(4)
  204.   dbBeginSession()
  205.   set id to char 1 to 2 of string(gCurrentTableID)
  206.   set textID to integer(id & "0002")
  207.   set rowID to integer(id & "0003")
  208.   set noteID to integer(id & "0004")
  209.   DBGetRecord(textID, "tables")
  210.   if gDBResult = 0 then
  211.     set tableText to DBGetField(gDBTableText) & RETURN
  212.   else
  213.     set tableText to "No Additional Information"
  214.   end if
  215.   if noteID <> 320004 then
  216.     DBGetRecord(noteID, "tables")
  217.     if gDBResult = 0 then
  218.       put RETURN & RETURN & DBGetField(gDBTableText) after tableText
  219.     end if
  220.   end if
  221.   put tableText into field "table text"
  222.   put tableText into field "table text scroll"
  223.   DBGetRecord(rowID, "tables")
  224.   put DBGetField(gDBTableText) into field "row name"
  225.   set rows to EMPTY
  226.   set rowsNum to 0
  227.   repeat while 1
  228.     set rowsNum to integer(rowsNum + 1)
  229.     if rowsNum < 10 then
  230.       put "0" before rowsNum
  231.     end if
  232.     set rowsID to integer(id & rowsNum & "01")
  233.     DBGetRecord(rowsID, "tables")
  234.     if gDBResult = 2 then
  235.       exit repeat
  236.     end if
  237.     put DBGetField(gDBTableText) & RETURN & RETURN after rows
  238.   end repeat
  239.   put rows into field "rows"
  240.   DBEndSession()
  241.   cursor(-1)
  242. end
  243.  
  244. on DBRowItems
  245.   global gDBResult, gDBTableText, gLastRowLine, gCurrentTableID
  246.   cursor(4)
  247.   dbBeginSession()
  248.   set id to char 1 to 2 of string(gCurrentTableID)
  249.   set midID to (gLastRowLine / 2) + 1
  250.   if midID < 10 then
  251.     put "0" before midID
  252.   end if
  253.   set itemsID to integer(id & midID & "02")
  254.   DBGetRecord(itemsID, "tables")
  255.   put DBGetField(gDBTableText) into field "row items"
  256.   DBEndSession()
  257.   cursor(-1)
  258. end
  259.  
  260. on DBChooser
  261.   global gDBStartSearch, gDBSearchMenu, gDBSearchMenus, gDBMenuTypes, gDBMenuIDs, gDBSearchIngredient, gDBSearchIngredients, gStandardIDDB, gLastResults
  262.   cursor(4)
  263.   set results to gLastResults
  264.   set addedMenu to 0
  265.   set addedIngredient to 0
  266.   set oldMenuNum to count(gDBSearchMenus)
  267.   repeat with id in gDBMenuIDs
  268.     set menuP to getPos(gDBSearchMenus, id)
  269.     set searchString to getAt(gDBMenuTypes, id)
  270.     set fieldName to getOne(gDBMenuTypes, searchString)
  271.     if not menuP and (field fieldName = searchString) then
  272.       set addedMenu to id
  273.       add(gDBSearchMenus, id)
  274.       next repeat
  275.     end if
  276.     if menuP and (field fieldName <> searchString) then
  277.       deleteAt(gDBSearchMenus, menuP)
  278.       set gDBStartSearch to 1
  279.     end if
  280.   end repeat
  281.   set newMenuNum to count(gDBSearchMenus)
  282.   set oldIngredientNum to count(gDBSearchIngredients)
  283.   set ingredientIDs to []
  284.   if field "ingredients selected" <> "No Ingredients Selected" then
  285.     set ingredients to stringToList(field "ingredients selected")
  286.     repeat with i in ingredients
  287.       if i <> EMPTY then
  288.         set id to getProp(gStandardIDDB, i)
  289.         add(ingredientIDs, id)
  290.         set ingredientP to getPos(gDBSearchIngredients, id)
  291.         if not ingredientP then
  292.           set addedIngredient to id
  293.           add(gDBSearchIngredients, id)
  294.         end if
  295.       end if
  296.     end repeat
  297.   end if
  298.   set gDBSearchIngredients to ingredientIDs
  299.   set newIngredientNum to count(gDBSearchIngredients)
  300.   if newIngredientNum < oldIngredientNum then
  301.     set gDBStartSearch to 1
  302.   end if
  303.   if gDBStartSearch and (gDBSearchMenus <> []) and (gDBSearchIngredients <> []) then
  304.     set gDBStartSearch to 0
  305.     set id to getAt(gDBSearchMenus, 1)
  306.     set results to DBStartSearch(id, gDBSearchMenu)
  307.     repeat with i = 2 to newMenuNum
  308.       set id to getAt(gDBSearchMenus, i)
  309.       put id
  310.       put id
  311.       set results to DBAddSearch(id, gDBSearchMenu)
  312.       put "results are ", results
  313.     end repeat
  314.     repeat with i = 1 to newIngredientNum
  315.       set id to getAt(gDBSearchIngredients, i)
  316.       set results to DBAddSearch(id, gDBSearchIngredient)
  317.     end repeat
  318.   else
  319.     if gDBStartSearch and (gDBSearchMenus <> []) then
  320.       set gDBStartSearch to 0
  321.       set id to getAt(gDBSearchMenus, 1)
  322.       put id
  323.       set results to DBStartSearch(id, gDBSearchMenu)
  324.       repeat with i = 2 to newMenuNum
  325.         set id to getAt(gDBSearchMenus, i)
  326.         set results to DBAddSearch(id, gDBSearchMenu)
  327.       end repeat
  328.     else
  329.       if gDBStartSearch and (gDBSearchIngredients <> []) then
  330.         set gDBStartSearch to 0
  331.         set id to getAt(gDBSearchIngredients, 1)
  332.         put id
  333.         set results to DBStartSearch(id, gDBSearchIngredient)
  334.         repeat with i = 2 to newIngredientNum
  335.           set id to getAt(gDBSearchIngredients, i)
  336.           set results to DBAddSearch(id, gDBSearchIngredient)
  337.         end repeat
  338.       else
  339.         if addedMenu then
  340.           set results to DBAddSearch(addedMenu, gDBSearchMenu)
  341.         else
  342.           if addedIngredient then
  343.             set results to DBAddSearch(addedIngredient, gDBSearchIngredient)
  344.           else
  345.             if (gDBSearchMenus = []) and (gDBSearchIngredients = []) then
  346.               set results to 0
  347.               set gDBStartSearch to 1
  348.             end if
  349.           end if
  350.         end if
  351.       end if
  352.     end if
  353.   end if
  354.   set gDBStartSearch to 1
  355.   if results > 0 then
  356.     set gLastResult to results
  357.   else
  358.     set gLastResult to 0
  359.   end if
  360.   setShowRecipes(results)
  361.   cursor(-1)
  362. end
  363.  
  364. on DBVideoLinks
  365.   global gCurrentRecipe, gLastVideoRecipe, gDBVideoLinks, gVideoIDDB, gRecipeIDDB
  366.   if gCurrentRecipe = gLastVideoRecipe then
  367.     exit
  368.   end if
  369.   cursor(4)
  370.   DBBeginSearchSession()
  371.   set gLastVideoRecipe to gCurrentRecipe
  372.   set videoList to []
  373.   set results to DBStartSearch(gCurrentRecipe, gDBVideoLinks)
  374.   repeat with i = 1 to results
  375.     set videoTitle to getOne(gVideoIDDB, DBGetResult(i))
  376.     if (videoTitle <> 0) and (videoTitle <> "Cut Poultry Into Bite-Sized Strips ") then
  377.       add(videoList, videoTitle & RETURN)
  378.     end if
  379.   end repeat
  380.   sort(videoList)
  381.   if gCurrentRecipe > 2068 then
  382.     put "No recipe specific videos available" into field "recipe videos"
  383.   else
  384.     if gCurrentRecipe < 1701 then
  385.       put "No recipe specific videos available" into field "recipe videos"
  386.     else
  387.       if videoList = [] then
  388.         put "No recipe specific videos available" into field "recipe videos"
  389.       else
  390.         put "Recipe: " & getOne(gRecipeIDDB, gCurrentRecipe) & RETURN & RETURN into field "recipe videos"
  391.         put listToString(videoList) after field "recipe videos"
  392.       end if
  393.     end if
  394.   end if
  395.   DBEndSession()
  396.   cursor(-1)
  397. end
  398.  
  399. on DBBookToPersonal
  400.   global gCurrentRecipe, gDBResult, gDBTitle, gDBServings, gDBPrepTime, gDBDishType, gDBIngredient, gCurrentPrepTime, gCurrentDishType, gDBInstruction, gDBInstructionType
  401.   cursor(4)
  402.   dbBeginSession()
  403.   DBGetRecord(gCurrentRecipe, "recipe")
  404.   put integer(DBGetField(gDBServings)) into field "servings"
  405.   DBGetRecord(gCurrentRecipe, "prep time")
  406.   set gCurrentPrepTime to integer(DBGetField(gDBPrepTime))
  407.   DBGetRecord(gCurrentRecipe, "dish type")
  408.   set gCurrentDishType to DBGetField(gDBDishType)
  409.   set ingredients to EMPTY
  410.   DBGetRecord(gCurrentRecipe, "ingredient")
  411.   set ingredient to DBGetField(gDBIngredient)
  412.   set ingredients to ingredient & RETURN & RETURN
  413.   repeat while 1
  414.     DBNextRecord("ingredient")
  415.     if gDBResult = 2 then
  416.       exit repeat
  417.     end if
  418.     set ingredient to DBGetField(gDBIngredient)
  419.     put ingredient & RETURN & RETURN after ingredients
  420.   end repeat
  421.   put ingredients into field "ingredients"
  422.   put ingredients into field "ingredients scroll"
  423.   set instructions to EMPTY
  424.   set num to 1
  425.   DBGetRecord(gCurrentRecipe, "instruction")
  426.   if DBGetField(gDBInstructionType) = 1.0 then
  427.     set anInstruction to DBGetField(gDBInstruction)
  428.     set instructions to num & ". " & anInstruction & RETURN & RETURN
  429.   end if
  430.   repeat while 1
  431.     set num to num + 1
  432.     DBNextRecord("instruction")
  433.     if gDBResult = 2 then
  434.       exit repeat
  435.     end if
  436.     if DBGetField(gDBInstructionType) = 1.0 then
  437.       set anInstruction to DBGetField(gDBInstruction)
  438.       put num & ". " & anInstruction & RETURN & RETURN after instructions
  439.       next repeat
  440.     end if
  441.     exit repeat
  442.   end repeat
  443.   put RETURN after instructions
  444.   put instructions into field "instructions"
  445.   put instructions into field "instructions scroll"
  446.   DBEndSession()
  447.   cursor(-1)
  448. end
  449.  
  450. on removeMethodTag anInstruction
  451. end
  452.  
  453. on DBEditPersonal
  454.   global gDBResult, gCurrentPrepTime, gCurrentDishType, gCurrentRecipe
  455.   if gCurrentRecipe < 2068 then
  456.     exit
  457.   end if
  458.   cursor(4)
  459.   DBBeginSaveSession()
  460.   DBGetSetRecord(gCurrentRecipe, "personal recipe")
  461.   put integer(DBGetSetField(3003)) into field "servings"
  462.   set gCurrentPrepTime to integer(DBGetSetField(3006)) + 1000
  463.   set gCurrentDishType to integer(DBGetSetField(3005))
  464.   set instructions to DBGetSetField(20001)
  465.   put instructions into field "instructions"
  466.   put instructions into field "instructions scroll"
  467.   set ingredients to EMPTY
  468.   DBGetSetRecord(gCurrentRecipe, 4000)
  469.   if gDBResult = 0 then
  470.     set ingredient to DBGetSetField(4004)
  471.     set ingredients to ingredient & RETURN & RETURN
  472.     repeat while 1
  473.       DBNextSetRecord(4000)
  474.       if gDBResult <> 0 then
  475.         exit repeat
  476.       end if
  477.       if integer(DBGetSetField(4000)) <> gCurrentRecipe then
  478.         exit repeat
  479.       end if
  480.       set ingredient to DBGetSetField(4004)
  481.       put ingredient & RETURN & RETURN after ingredients
  482.     end repeat
  483.     put ingredients into field "ingredients"
  484.     put ingredients into field "ingredients scroll"
  485.   end if
  486.   DBEndSession()
  487.   cursor(-1)
  488. end
  489.